package com.dux.example.easyyapi.dto;

import com.fasterxml.jackson.annotation.JsonFormat;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 学生信息类
 * 注解@mock表示mock测试时该字段要模拟的数据，分三种情况：
 * 1. 如果后面是Mock.js的表达式，则模拟对应的数据类型；
 * 2. 如果后面是基本类型或字符串，则直接使用字面量；
 * 3. 如果后面是${名字}，则使用.easy.api.config文件里的变量值
 */
public class Student {
    /**
     * 学号（使用自定义mock规则，字段必须）
     * @mock ${studentId}
     */
    @NotNull(message = "学号不能为空")
    private Integer id;
    /**
     * 姓名（使用mock.js规则，字段必须）
     * @mock @cname
     * @required
     */
    private String name;
    /**
     * 性别: 0-男、1-女 （使用mock.js规则，字段枚举）
     * @mock @pick([0, 1])
     */
    private Integer sex;
    /**
     * 身份证号码（使用mock.js规则）
     * @mock @id
     */
    private String idNo;
    /**
     * 出生日期（使用默认规则）
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;
    /**
     * 班级id（使用默认规则，有默认值）
     * @default 1
     * @mock 1
     */
    private Integer gradeId;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getIdNo() {
        return idNo;
    }

    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getEntryDate() {
        return entryDate;
    }

    public void setEntryDate(String entryDate) {
        this.entryDate = entryDate;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Integer getGradeId() {
        return gradeId;
    }

    public void setGradeId(Integer gradeId) {
        this.gradeId = gradeId;
    }
}
